這次來看到Number Random啦,也就是隨機亂數。
隨機亂數很常出現在面試的考題~ 所以我寫了兩種簡單的亂數程式。
學習目標: Number Random的實務
學習難度: ☆☆☆
首先是單一亂數~ 很簡單,只有srand跟rand要注意一下~
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
int num;
cin>>num;
srand(time(NULL)); //time(NULL)會輸出從1970年1月1號 0點0分0秒開始到現在的秒數
cout<<rand()%num+0<<endl; //亂數從0開始直到num
return 0;
}
接下來是多個數的亂數。
使用者可以輸入要亂數的數量(input),程式會輸出1到input範圍的數。
例如~輸入5,可能會輸出: 1, 3, 2, 4, 5。
比較特別的是它不會輸出相同的數字。
老樣子用陣列去存亂數,然後再逐一檢查。
#include <iostream>
#include <ctime>
#include <stdlib.h>
using namespace std;
void random(int input)
{
srand(time(NULL));
int i,j;
int num[input];
for(i=0;i<input;i++) //走訪亂數的數量 0~input
{
do
{
num[i]=rand()%(input)+1; /*這裡會進行亂數(1~input)*/
for(j=0;j<i;j++)
{
if(num[i]==num[j]) /*如果有重複的亂數就跳出*/
break;
}
}while(j!=i); //當j!=i時,意味有數字重複,因為重複時,剛剛的迴圈會break,不讓j繼續增值,所以要在做亂數
cout<<num[i]<<endl;
}
}
int main()
{
int input;
cin>>input; //輸入要亂數的數量
random(input); //開始執行亂數
return 0;
}
參考資料:
https://www.cplusplus.com/reference/cstdlib/rand/